package com.itheima.继承关系下方法重写的注意事项;
/*
    1.Java中提供了一个校验方法重写是否规范的注解:@Override
    2.父类中私有方法子类无法重写             --sun公司规定
    3.父类中静态方法子类无法重写             -sun公司规定
    4.子类重写父类方法时,子类方法权限修饰符必须大于等于父类
    5.子类重写父类方法时,子类方法返回值类型可以和父类相同,
    也可以是父类方法返回值的子类

    构造方法的访问特点:
        Jvm会默认给每个类的每个构造方法第一行加上super()
        super():调用父类的无参构造
        注意:构造方法第一行的super(),我们不写,Jvm默认补上,写了就不补了
        如果父类没有无参构造,子类构造方法必须手动调用父类带参构造方法,否则会报错

        this():访问本类无参构造
        super():访问父类无参构造
        不能共存!
 */
public class Demo04 {
    public static void main(String[] args) {
        Zi zi = new Zi();
    }

}

class Fu{
    public static int[] arr = new int[5];

    /*public Fu(){
        System.out.println("我是父类的无参构造");
    }*/
    public Fu(int a){
        System.out.println("我是父类的带参构造");
    }

    public void method(){

    }

    private void method2(){

    }

    public static void method3(){

    }

    protected void method1(){}


    public Fu method04(){
        return new Fu(2);
    }


}

class Zi extends Fu{
    @Override
    public void method() {
    }

    //@Override
    private void method2(){
    //私有方法无法重写
    }

    //@Override
    public static void method3(){
    //静态方法无法重写
    }

    @Override//用法:注解加载方法上,不报错,说明符合方法重写
    public void method1() {

    }

    @Override
    public Zi method04() {
        return new Zi();
    }

    public Zi(){
        this(2);
        System.out.println("我是子类的无参构造");
    }

    public Zi(int b){
        super(2);
        System.out.println("我是子类的带参构造");
    }
}